feat(card): Google In-App provisioning#25742
Conversation
Add the shared infrastructure for push provisioning cards to mobile wallets. This base branch contains: - Core hook (usePushProvisioning) and service (PushProvisioningService) - Card provider adapters (GalileoCardAdapter for US users) - Base wallet adapter interfaces and utilities - Feature flag selectors for both platforms - CardHome and ReviewOrder UI integration - Localization strings and analytics events Platform-specific implementations (GoogleWalletAdapter, AppleWalletAdapter) are added in separate branches: - feat/google-in-app-provisioning - feat/apple-in-app-provisioning Co-authored-by: Cursor <cursoragent@cursor.com>
Add Google Wallet (Android) support for in-app card provisioning: - GoogleWalletAdapter for Android push provisioning - android/build.gradle with maven local repo for TapAndPay SDK - .gitignore to exclude android/libs directory - CI/CD changes for TapAndPay SDK setup: - GitHub Actions: SSH agent and clone steps for Android builds - Bitrise: Clone step in Android build template - react-native.config.js with conditional SDK detection
…k/metamask-mobile into feat/card-push-provisioning-base
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
…google-in-app-provisioning
…ap and pay sdk repo
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
| activeOpacity={0.8} | ||
| testID={testID} | ||
| accessibilityRole="button" | ||
| accessibilityLabel="Add to Google Wallet" |
There was a problem hiding this comment.
Hardcoded English accessibility label on localized button
Low Severity
The accessibilityLabel is hardcoded as "Add to Google Wallet" in English, while the visible button SVG is locale-aware (rendered via getGoogleWalletButtonSvg with ~60 language variants). Screen reader users in non-English locales hear English even though the visual button is localized. This value needs to go through the strings() i18n function to match the localized SVG.
|
✅ E2E Fixture Validation — Schema is up to date |
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
SmokeCard is the primary tag as these changes directly affect the Card home screen and push provisioning flow. Per SmokeCard's description, SmokeTrade and SmokeConfirmations must also be selected since Add Funds uses swaps requiring transaction confirmations. No other tags are needed - the changes are isolated to the Card feature area and don't touch shared navigation, browser, or other wallet flows. Performance Test Selection: |
|





Description
This PR adds Google Wallet (Android) in-app provisioning support for the MetaMask Card feature. Users can now add their MetaMask Card directly to Google Wallet from within the app.
What is the reason for the change?
Users currently cannot add their MetaMask Card to Google Wallet directly from the app. They need to manually add the card through the Google Wallet app, which provides a suboptimal user experience.
What is the improvement/solution?
GoogleWalletAdapterthat integrates with the@expensify/react-native-walletlibrary for Androidproviders.tsfactory to returnGoogleWalletAdapterfor Android platformreact-native.config.jsto conditionally enable the wallet library only when the SDK is presentandroid/build.gradleto include a local Maven repository for the TapAndPay SDKChangelog
CHANGELOG entry: Added Google Wallet in-app provisioning for MetaMask Card on Android
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Introduces new Google Wallet provisioning flow and CI logic to fetch a private Tap-and-Pay SDK, which can affect Android build/release behavior and wallet tokenization edge cases.
Overview
Enables Google Wallet (Android) in-app provisioning for MetaMask Card by adding a new
GoogleWalletAdapter(including “Yellow Path” resume handling via token lookup/listing) and exporting it through the push provisioning adapter factory.Updates Card Home push-provisioning inputs to use a KYC-derived cardholder name (and passes
accountCreatedAt), swaps in a new cross-platformAddToWalletButtoncomponent (native on iOS, localized SVG button on Android), and adjusts the Galileo adapter contract to return only theopaquePaymentCardneeded for Google provisioning.Adds Android build support for the private Tap-and-Pay SDK: GitHub Actions optionally clones the SDK into
android/libs,android/build.gradleadds a local Maven repo, andandroid/libsis gitignored.Written by Cursor Bugbot for commit 7273028. This will update automatically on new commits. Configure here.